# 使用官方 ROS Noetic 镜像（基于 Ubuntu 20.04）
FROM osrf/ros:noetic-desktop-full

# 构建参数（可用于 CI/CD 区分环境）
ARG USE_CI

# 设置非交互模式
ENV DEBIAN_FRONTEND=noninteractive

# 合并所有 APT 安装：基础工具 + OpenCV + PCL（一次 update，一次 clean）
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        # 基础工具
        curl \
        vim \
        wget \
        python3-pip \
        cmake \
        build-essential \
        git \
        unzip \
        pkg-config \
        python3-dev \
        python3-numpy \
        libgl1-mesa-dev \
        libglew-dev \
        libpython3-dev \
        libeigen3-dev \
        apt-transport-https \
        ca-certificates \
        software-properties-common \
        # OpenCV (4.2.0)
        python3-opencv \
        libopencv-dev \
        # PCL (1.10.0) —— 满足 ≥1.8
        libpcl-dev \
        libcgal-dev \
        pcl-tools && \

    rm -rf /var/lib/apt/lists/*

WORKDIR /tmp
RUN git clone https://gitcode.com/Belong/SophusDo.git && \
    cd SophusDo && \
    # 固定一个广泛使用的稳定 commit（2023年主流版本，兼容 C++14/17 + Eigen 3.3+）
    mkdir build && cd build && \
    cmake .. && \
    make -j$(nproc) && \
    make install
    # 清理源码（减小镜像体积）
    # rm -rf /tmp/SophusDo
    
# 设置工作目录
WORKDIR /home/one/catkin_ws

# 初始化 catkin 工作空间（src 目录必须存在）
RUN mkdir -p src

# 配置 ROS 环境自动加载
RUN echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc && \
    echo "source /home/one/catkin_ws/devel/setup.bash" >> ~/.bashrc

# 默认启动 bash（适用于交互式调试）
CMD ["/bin/bash"]